# -*- coding:utf-8 -*-
# ==========================================
#       author: ZiChen
#        mail: 1538185121@qq.com
#         time: 2021/04/05
# ==========================================
# instruction： 利用Gmail邮箱进行信息推送


# 发送邮件部分
from smtplib import SMTP
# 发送字符串的邮件
from email.mime.text import MIMEText
# 发送附件
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
# 控制台


class MailSent:
    def __init__(self):
        self.Name = 'MailSent'
        self.vision = '0.2.0.210405_alpha'

    def Send(self, fromaddr, toaddrs, password, message_subject, message, filePath, HOST, PORT):
        '''
        邮箱发送主函数
        参数：
        fromaddr 邮件发送方邮箱地址
        password 密码(部分邮箱为授权码)
        toaddrs  邮件接受方邮箱地址，注意需要[]包裹，这意味着你可以写多个邮件地址群发
        message  邮件内容
        message_subject 邮件主题
        filePath 要发送的附件绝对路径（列表）,支持多个附件
        HOST,PORT 邮箱的SMTP地址和端口（如果有端口的话,没有则为None）
        '''

        # Multipart就是分多个部分
        msg = MIMEMultipart()
        # 邮件主题
        msg['Subject'] = '%s' % message_subject
        # 发送方信息
        msg['From'] = fromaddr
        # 接受方信息
        msg['To'] = toaddrs[0]

        # 文字部分
        msg.attach(MIMEText("%s" % message))

        # 附件部分
        if filePath != 'None':  # 发送附件
            for i in range(0, len(filePath)):
                part = MIMEApplication(open('%s' % filePath[i], 'rb').read())
                part.add_header('Content-Disposition', 'attachment',
                                filename="%s" % filePath[i].split('\\')[-1])
                msg.attach(part)

        if PORT == 'None':
            server = SMTP(HOST)
        else:
            server = SMTP()
            server.connect(HOST, PORT)
        # 登录并发送信息
        server.login(fromaddr, password)
        server.sendmail(fromaddr, toaddrs, msg.as_string())
        server.quit()
